package com.maidada.codesharebackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.maidada.codesharebackend.common.PageResult;
import com.maidada.codesharebackend.model.dto.user.UserAddRequest;
import com.maidada.codesharebackend.model.dto.user.UserLoginRequest;
import com.maidada.codesharebackend.model.dto.user.UserQueryRequest;
import com.maidada.codesharebackend.model.dto.user.UserUpdateRequest;
import com.maidada.codesharebackend.model.entity.User;
import com.maidada.codesharebackend.model.vo.UserVO;

/**
 * 用户表 Service
 *
 * @author wulinxuan
 */
public interface UserService extends IService<User> {

    /**
     * 用户登录
     *
     * @param userLoginRequest 登录请求
     * @return 用户信息
     */
    UserVO login(UserLoginRequest userLoginRequest);

    /**
     * 用户登出
     *
     * @return 是否成功
     */
    Boolean logout();

    /**
     * 获取当前用户信息
     *
     * @param userId 用户id
     * @return 用户信息
     */
    UserVO getCurrentUser(Long userId);

    /**
     * 新增用户
     *
     * @param userAddRequest 新增请求
     * @return 用户id
     */
    Long addUser(UserAddRequest userAddRequest);

    /**
     * 删除用户
     *
     * @param id 用户id
     * @return 是否成功
     */
    Boolean deleteUser(Long id);

    /**
     * 修改用户
     *
     * @param userUpdateRequest 修改请求
     * @return 是否成功
     */
    Boolean updateUser(UserUpdateRequest userUpdateRequest);

    /**
     * 分页查询用户
     *
     * @param userQueryRequest 查询请求
     * @return 分页结果
     */
    PageResult<UserVO> pageUser(UserQueryRequest userQueryRequest);

    /**
     * 获取用户详情
     *
     * @param id 用户id
     * @return 用户信息
     */
    UserVO getUserById(Long id);
}

